import axios from 'axios';
import { useUserStore } from '@/stores/user';
import { Toast } from 'vant';
// 因为不在组件上下文，useRouter 是返回不了 router 实例的
// 所以导入的 rouer/index.ts 中创建的 router、route
import router from '@/router';

export const baseURL = 'https://consult-api.itheima.net/';
export const instance = axios.create({
  // 1 基地址
  baseURL: baseURL,
  // 2 过期时间
  timeout: 10000,
});

// 请求拦截器配置
instance.interceptors.request.use(
  function (config) {
    const token = useUserStore().user?.token;
    // config.headers.Authorization = `Bearer ${token}`;
    // 判断token是否存在再添加
    if (token && config.headers) {
      config.headers.Authorization = `Bearer ${token}`;
    }
    return config;
  },
  function (error) {
    return Promise.reject(error);
  }
);

// 响应拦截器
instance.interceptors.response.use(
  function (response) {
    console.log('响应拦截器统没有处理的res', response);
    // 1、数据格式的统一(剥离)处理
    const data = response.data;
    // 2、业务逻辑错误的统一处理
    if (data.code !== 10000) {
      // 提示用户
      Toast(data.message);
      // 通知你自己的代码
      return Promise.reject(data.message);
    }
    return data;
  },
  function (error) {
    console.log('2xx意外', error);
    // 任何 2xx 意外HTTP响应状态码，走这里
    // 3、网络错误的统一处理（401：认证失败）
    if (error.response.status === 401) {
      // 删除用户信息
      const store = useUserStore();
      store.delUser();
      // 重定向页面到 /login 页面
      // 当前所在的路由
      const currentPath = router.currentRoute.value.fullPath;
      console.log('currentPath', currentPath);
      router.push('/login?returnURL=' + currentPath);
    }

    return Promise.reject(error);
  }
);
